﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Xml.Linq;
using MySql.Data.MySqlClient;
using MySql.Data.Types;
using System.Data.Sql;
using System.Data.SqlClient;

/// Espacio de nombres para los contenedores
namespace GCon
{

    /// <summary>
    /// Clase contenedora de Alumnos
    /// </summary>
    public class Con_Alumnos
    {

        /// <summary>
        /// Constructor por defecto
        /// </summary>
        public Con_Alumnos()
        {
            dAlumnos = new Dictionary<String, Con_Alumno>();
        }

        public void ListaAlumnos()
        {
            MySqlConnection oConexion;
            MySqlDataAdapter oAdaptador;
            DataSet ds;
            String llamada;
            Con_Alumno oAlumno;

            oConexion = new MySqlConnection();
            oConexion.ConnectionString = "Server=localhost;Database=MERYLAND;Uid=root;Pwd=MERYLAND;";
            oConexion.Open();

            llamada = "CALL ListaAlumnos()";
            oAdaptador = new MySqlDataAdapter(llamada, oConexion);
            ds = new DataSet();
            oAdaptador.Fill(ds, "Tabla");

            foreach (DataRow dr in ds.Tables[0].Rows)
            {

                oAlumno = new Con_Alumno(dr["ALUMNO_ID_PK"].ToString(), dr["ALUMNO_NOMBRE"].ToString(), dr["ALUMNO_APELLIDO1"].ToString(), dr["ALUMNO_APELLIDO2"].ToString(), dr["ALUMNO_NIF"].ToString(), dr["ALUMNO_DIRECCION"].ToString(), dr["ALUMNO_CP"].ToString(), dr["ALUMNO_MAIL"].ToString(), dr["ALUMNO_OBSERVACIONES"].ToString(), dr["ALUMNO_FECHA_CREACION"].ToString(), dr["ALUMNO_TLF1"].ToString(), dr["ALUMNO_TLF2"].ToString(), dr["CIUDAD_ID_PK"].ToString(), dr["PROVINCIA_ID_PK"].ToString(), dr["ESTADO_ALUMNO_ID_PK"].ToString(), dr["COMERCIAL_ID_PK"].ToString(), dr["NACIONALIDAD_ID_PK"].ToString(),
                                         dr["ALUMNO_NUM_MATRICULA"].ToString(), dr["ALUMNO_ALTA_BOLSA_EMPLEO"].ToString(), dr["ALUMNO_NUM_CUENTA"].ToString(), dr["ALUMNO_FECHA_NACIMIENTO"].ToString(), dr["ALUMNO_NUM_HIJOS"].ToString(), dr["ALUMNO_TRABAJO_ACTUAL"].ToString(), dr["ALUMNO_HORARIO_TRABAJO"].ToString(), dr["ALUMNO_ESTUDIOS_REALIZADOS"].ToString(), dr["ALUMNO_INGLES"].ToString(), dr["ALUMNO_INFORMATICA"].ToString(), dr["ALUMNO_OTROS_ESTUDIOS"].ToString(), dr["ALUMNO_OBSERVACIONES_DOCENCIA"].ToString(), dr["ESTADO_CIVIL_ID_PK"].ToString(), dr["TOMADOR_ID_PK"].ToString());
                dAlumnos.Add(oAlumno.Get_ID_PK(), oAlumno);
                oAlumno = null;

            }

            oConexion.Close();
        }

        public void ListaAlumnosActivos()
        {
            MySqlConnection oConexion;
            MySqlDataAdapter oAdaptador;
            DataSet ds;
            String llamada;
            Con_Alumno oAlumno;

            oConexion = new MySqlConnection();
            oConexion.ConnectionString = "Server=localhost;Database=MERYLAND;Uid=root;Pwd=MERYLAND;";
            oConexion.Open();

            llamada = "CALL ListaAlumnosActivos()";
            oAdaptador = new MySqlDataAdapter(llamada, oConexion);
            ds = new DataSet();
            oAdaptador.Fill(ds, "Tabla");

            foreach (DataRow dr in ds.Tables[0].Rows)
            {

                oAlumno = new Con_Alumno(dr["ALUMNO_ID_PK"].ToString(), dr["ALUMNO_NOMBRE"].ToString(), dr["ALUMNO_APELLIDO1"].ToString(), dr["ALUMNO_APELLIDO2"].ToString(), dr["ALUMNO_NIF"].ToString(), dr["ALUMNO_DIRECCION"].ToString(), dr["ALUMNO_CP"].ToString(), dr["ALUMNO_MAIL"].ToString(), dr["ALUMNO_OBSERVACIONES"].ToString(), dr["ALUMNO_FECHA_CREACION"].ToString(), dr["ALUMNO_TLF1"].ToString(), dr["ALUMNO_TLF2"].ToString(), dr["CIUDAD_ID_PK"].ToString(), dr["PROVINCIA_ID_PK"].ToString(), dr["ESTADO_ALUMNO_ID_PK"].ToString(), dr["COMERCIAL_ID_PK"].ToString(), dr["NACIONALIDAD_ID_PK"].ToString(),
                                         dr["ALUMNO_NUM_MATRICULA"].ToString(), dr["ALUMNO_ALTA_BOLSA_EMPLEO"].ToString(), dr["ALUMNO_NUM_CUENTA"].ToString(), dr["ALUMNO_FECHA_NACIMIENTO"].ToString(), dr["ALUMNO_NUM_HIJOS"].ToString(), dr["ALUMNO_TRABAJO_ACTUAL"].ToString(), dr["ALUMNO_HORARIO_TRABAJO"].ToString(), dr["ALUMNO_ESTUDIOS_REALIZADOS"].ToString(), dr["ALUMNO_INGLES"].ToString(), dr["ALUMNO_INFORMATICA"].ToString(), dr["ALUMNO_OTROS_ESTUDIOS"].ToString(), dr["ALUMNO_OBSERVACIONES_DOCENCIA"].ToString(), dr["ESTADO_CIVIL_ID_PK"].ToString(), dr["TOMADOR_ID_PK"].ToString());
                dAlumnos.Add(oAlumno.Get_ID_PK(), oAlumno);
                oAlumno = null;

            }

            oConexion.Close();
        }

        public void ListaAlumnosPorComercial(String IdComercial)
        {
            MySqlConnection oConexion;
            MySqlDataAdapter oAdaptador;
            DataSet ds;
            String llamada;
            Con_Alumno oAlumno;

            oConexion = new MySqlConnection();
            oConexion.ConnectionString = "Server=localhost;Database=MERYLAND;Uid=root;Pwd=MERYLAND;";
            oConexion.Open();

            llamada = "CALL ListaAlumnosPorComercial( '" + IdComercial + "' )";
            oAdaptador = new MySqlDataAdapter(llamada, oConexion);
            ds = new DataSet();
            oAdaptador.Fill(ds, "Tabla");

            foreach (DataRow dr in ds.Tables[0].Rows)
            {

                oAlumno = new Con_Alumno(dr["ALUMNO_ID_PK"].ToString(), dr["ALUMNO_NOMBRE"].ToString(), dr["ALUMNO_APELLIDO1"].ToString(), dr["ALUMNO_APELLIDO2"].ToString(), dr["ALUMNO_NIF"].ToString(), dr["ALUMNO_DIRECCION"].ToString(), dr["ALUMNO_CP"].ToString(), dr["ALUMNO_MAIL"].ToString(), dr["ALUMNO_OBSERVACIONES"].ToString(), dr["ALUMNO_FECHA_CREACION"].ToString(), dr["ALUMNO_TLF1"].ToString(), dr["ALUMNO_TLF2"].ToString(), dr["CIUDAD_ID_PK"].ToString(), dr["PROVINCIA_ID_PK"].ToString(), dr["ESTADO_ALUMNO_ID_PK"].ToString(), dr["COMERCIAL_ID_PK"].ToString(), dr["NACIONALIDAD_ID_PK"].ToString(),
                                         dr["ALUMNO_NUM_MATRICULA"].ToString(), dr["ALUMNO_ALTA_BOLSA_EMPLEO"].ToString(), dr["ALUMNO_NUM_CUENTA"].ToString(), dr["ALUMNO_FECHA_NACIMIENTO"].ToString(), dr["ALUMNO_NUM_HIJOS"].ToString(), dr["ALUMNO_TRABAJO_ACTUAL"].ToString(), dr["ALUMNO_HORARIO_TRABAJO"].ToString(), dr["ALUMNO_ESTUDIOS_REALIZADOS"].ToString(), dr["ALUMNO_INGLES"].ToString(), dr["ALUMNO_INFORMATICA"].ToString(), dr["ALUMNO_OTROS_ESTUDIOS"].ToString(), dr["ALUMNO_OBSERVACIONES_DOCENCIA"].ToString(), dr["ESTADO_CIVIL_ID_PK"].ToString(), dr["TOMADOR_ID_PK"].ToString());
                dAlumnos.Add(oAlumno.Get_ID_PK(), oAlumno);
                oAlumno = null;

            }

            oConexion.Close();
        }

        public void ListaAlumnosPorEstado(String IdEstado)
        {
            MySqlConnection oConexion;
            MySqlDataAdapter oAdaptador;
            DataSet ds;
            String llamada;
            Con_Alumno oAlumno;

            oConexion = new MySqlConnection();
            oConexion.ConnectionString = "Server=localhost;Database=MERYLAND;Uid=root;Pwd=MERYLAND;";
            oConexion.Open();

            llamada = "CALL ListaAlumnosPorEstado( '" + IdEstado + "' )";
            oAdaptador = new MySqlDataAdapter(llamada, oConexion);
            ds = new DataSet();
            oAdaptador.Fill(ds, "Tabla");

            foreach (DataRow dr in ds.Tables[0].Rows)
            {

                oAlumno = new Con_Alumno(dr["ALUMNO_ID_PK"].ToString(), dr["ALUMNO_NOMBRE"].ToString(), dr["ALUMNO_APELLIDO1"].ToString(), dr["ALUMNO_APELLIDO2"].ToString(), dr["ALUMNO_NIF"].ToString(), dr["ALUMNO_DIRECCION"].ToString(), dr["ALUMNO_CP"].ToString(), dr["ALUMNO_MAIL"].ToString(), dr["ALUMNO_OBSERVACIONES"].ToString(), dr["ALUMNO_FECHA_CREACION"].ToString(), dr["ALUMNO_TLF1"].ToString(), dr["ALUMNO_TLF2"].ToString(), dr["CIUDAD_ID_PK"].ToString(), dr["PROVINCIA_ID_PK"].ToString(), dr["ESTADO_ALUMNO_ID_PK"].ToString(), dr["COMERCIAL_ID_PK"].ToString(), dr["NACIONALIDAD_ID_PK"].ToString(),
                                         dr["ALUMNO_NUM_MATRICULA"].ToString(), dr["ALUMNO_ALTA_BOLSA_EMPLEO"].ToString(), dr["ALUMNO_NUM_CUENTA"].ToString(), dr["ALUMNO_FECHA_NACIMIENTO"].ToString(), dr["ALUMNO_NUM_HIJOS"].ToString(), dr["ALUMNO_TRABAJO_ACTUAL"].ToString(), dr["ALUMNO_HORARIO_TRABAJO"].ToString(), dr["ALUMNO_ESTUDIOS_REALIZADOS"].ToString(), dr["ALUMNO_INGLES"].ToString(), dr["ALUMNO_INFORMATICA"].ToString(), dr["ALUMNO_OTROS_ESTUDIOS"].ToString(), dr["ALUMNO_OBSERVACIONES_DOCENCIA"].ToString(), dr["ESTADO_CIVIL_ID_PK"].ToString(), dr["TOMADOR_ID_PK"].ToString());
                dAlumnos.Add(oAlumno.Get_ID_PK(), oAlumno);
                oAlumno = null;

            }

            oConexion.Close();
        }

        public void AlumnosPorGrupoProfesorAsignatura(String idGrupo, String idProfesor, String idAsignatura)
        {
            MySqlConnection oConexion;
            MySqlDataAdapter oAdaptador;
            DataSet ds;
            String llamada;
            Con_Alumno oAlumno;

            oConexion = new MySqlConnection();
            oConexion.ConnectionString = "Server=localhost;Database=MERYLAND;Uid=root;Pwd=MERYLAND;";
            oConexion.Open();

            llamada = "CALL AlumnosPorGrupoProfesorAsignatura('" + idGrupo + "','" + idProfesor + "','" + idAsignatura + "')";
            oAdaptador = new MySqlDataAdapter(llamada, oConexion);
            ds = new DataSet();
            oAdaptador.Fill(ds, "Tabla");

            foreach (DataRow dr in ds.Tables[0].Rows)
            {
                oAlumno = new Con_Alumno();
                oAlumno.Set_ID_PK (dr["ALUMNO_ID_PK"].ToString());
                oAlumno.Set_NOMBRE (dr["ALUMNO_NOMBRE"].ToString());
                oAlumno.Set_APELLIDO1(dr["ALUMNO_APELLIDO1"].ToString());
                oAlumno.Set_APELLIDO2(dr["ALUMNO_APELLIDO2"].ToString());
                dAlumnos.Add(oAlumno.Get_ID_PK(), oAlumno);
                oAlumno = null;

            }

            oConexion.Close();
        }

        public void ListaAlumnosDeGrupo(String idGrupo)
        {
            MySqlConnection oConexion;
            MySqlDataAdapter oAdaptador;
            DataSet ds;
            String llamada;
            Con_Alumno oAlumno;

            oConexion = new MySqlConnection();
            oConexion.ConnectionString = "Server=localhost;Database=MERYLAND;Uid=root;Pwd=MERYLAND;";
            oConexion.Open();

            llamada = "CALL ListaAlumnosDeGrupo('" + idGrupo + "')";
            oAdaptador = new MySqlDataAdapter(llamada, oConexion);
            ds = new DataSet();
            oAdaptador.Fill(ds, "Tabla");

            foreach (DataRow dr in ds.Tables[0].Rows)
            {
                oAlumno = new Con_Alumno();
                oAlumno.Set_ID_PK(dr["ALUMNO_ID_PK"].ToString());
                oAlumno.Set_NOMBRE(dr["ALUMNO_NOMBRE"].ToString());
                oAlumno.Set_APELLIDO1(dr["ALUMNO_APELLIDO1"].ToString());
                oAlumno.Set_APELLIDO2(dr["ALUMNO_APELLIDO2"].ToString());
                dAlumnos.Add(oAlumno.Get_ID_PK(), oAlumno);
                oAlumno = null;

            }

            oConexion.Close();
        }

        public void AlumnosDeCurso(String idCurso)
        {
            MySqlConnection oConexion;
            MySqlDataAdapter oAdaptador;
            DataSet ds;
            String llamada;
            Con_Alumno oAlumno;

            oConexion = new MySqlConnection();
            oConexion.ConnectionString = "Server=localhost;Database=MERYLAND;Uid=root;Pwd=MERYLAND;";
            oConexion.Open();

            llamada = "CALL AlumnosDeCurso('" + idCurso + "')";
            oAdaptador = new MySqlDataAdapter(llamada, oConexion);
            ds = new DataSet();
            oAdaptador.Fill(ds, "Tabla");

            foreach (DataRow dr in ds.Tables[0].Rows)
            {
                oAlumno = new Con_Alumno();
                oAlumno.Set_ID_PK(dr["ALUMNO_ID_PK"].ToString());
                oAlumno.Set_NOMBRE(dr["ALUMNO_NOMBRE"].ToString());
                oAlumno.Set_APELLIDO1(dr["ALUMNO_APELLIDO1"].ToString());
                oAlumno.Set_APELLIDO2(dr["ALUMNO_APELLIDO2"].ToString());
                dAlumnos.Add(oAlumno.Get_ID_PK(), oAlumno);
                oAlumno = null;

            }

            oConexion.Close();
        }

        public void AlumnosPorProfesor(String idProfesor)
        {
            MySqlConnection oConexion;
            MySqlDataAdapter oAdaptador;
            DataSet ds;
            String llamada;
            Con_Alumno oAlumno;

            oConexion = new MySqlConnection();
            oConexion.ConnectionString = "Server=localhost;Database=MERYLAND;Uid=root;Pwd=MERYLAND;";
            oConexion.Open();

            llamada = "CALL AlumnosPorProfesor('" + idProfesor + "')";
            oAdaptador = new MySqlDataAdapter(llamada, oConexion);
            ds = new DataSet();
            oAdaptador.Fill(ds, "Tabla");

            foreach (DataRow dr in ds.Tables[0].Rows)
            {
                oAlumno = new Con_Alumno();
                oAlumno.Set_ID_PK(dr["ALUMNO_ID_PK"].ToString());
                oAlumno.Set_NOMBRE(dr["ALUMNO_NOMBRE"].ToString());
                oAlumno.Set_APELLIDO1(dr["ALUMNO_APELLIDO1"].ToString());
                oAlumno.Set_APELLIDO2(dr["ALUMNO_APELLIDO2"].ToString());
                dAlumnos.Add(oAlumno.Get_ID_PK(), oAlumno);
                oAlumno = null;

            }

            oConexion.Close();
        }

        public void ListaAlumnosEnBolsaEmpleo()
        {
            MySqlConnection oConexion;
            MySqlDataAdapter oAdaptador;
            DataSet ds;
            String llamada;
            Con_Alumno oAlumno;

            oConexion = new MySqlConnection();
            oConexion.ConnectionString = "Server=localhost;Database=MERYLAND;Uid=root;Pwd=MERYLAND;";
            oConexion.Open();

            llamada = "CALL ListaAlumnosEnBolsaEmpleo()";
            oAdaptador = new MySqlDataAdapter(llamada, oConexion);
            ds = new DataSet();
            oAdaptador.Fill(ds, "Tabla");

            foreach (DataRow dr in ds.Tables[0].Rows)
            {
                oAlumno = new Con_Alumno();
                oAlumno.Set_ID_PK(dr["ALUMNO_ID_PK"].ToString());
                oAlumno.Set_NOMBRE(dr["ALUMNO_NOMBRE"].ToString());
                oAlumno.Set_APELLIDO1(dr["ALUMNO_APELLIDO1"].ToString());
                oAlumno.Set_APELLIDO2(dr["ALUMNO_APELLIDO2"].ToString());
                oAlumno.Set_TLF1(dr["ALUMNO_TLF1"].ToString());
                oAlumno.Set_TLF2(dr["ALUMNO_TLF2"].ToString());
                oAlumno.Set_ALTA_BOLSA_EMPLEO(dr["ALTA_BOLSA_EMPLEO"].ToString());
                dAlumnos.Add(oAlumno.Get_ID_PK(), oAlumno);
                oAlumno = null;

            }

            oConexion.Close();
        }

        public void ListaAlumnosEnPracticas()
        {
            MySqlConnection oConexion;
            MySqlDataAdapter oAdaptador;
            DataSet ds;
            String llamada;
            Con_Alumno oAlumno;

            oConexion = new MySqlConnection();
            oConexion.ConnectionString = "Server=localhost;Database=MERYLAND;Uid=root;Pwd=MERYLAND;";
            oConexion.Open();

            llamada = "CALL ListaAlumnosEnPracticas()";
            oAdaptador = new MySqlDataAdapter(llamada, oConexion);
            ds = new DataSet();
            oAdaptador.Fill(ds, "Tabla");

            foreach (DataRow dr in ds.Tables[0].Rows)
            {
                oAlumno = new Con_Alumno();
                oAlumno.Set_ID_PK(dr["ALUMNO_ID_PK"].ToString());
                oAlumno.Set_NOMBRE(dr["ALUMNO_NOMBRE"].ToString());
                oAlumno.Set_APELLIDO1(dr["ALUMNO_APELLIDO1"].ToString());
                oAlumno.Set_APELLIDO2(dr["ALUMNO_APELLIDO2"].ToString());
                oAlumno.Set_NIF(dr["ALUMNO_NIF"].ToString());
                oAlumno.Set_NOMBRE_EMPRESA(dr["EMPRESA_NOMBRE"].ToString());
                oAlumno.Set_CIF_EMPRESA(dr["EMPRESA_CIF"].ToString());
                oAlumno.Set_FECHA_FIN(dr["FECHA_FIN"].ToString());
                dAlumnos.Add(oAlumno.Get_ID_PK(), oAlumno);
                oAlumno = null;

            }

            oConexion.Close();
        }

        public Con_Alumno GetAlumno(String Id)
        {
            return this.dAlumnos[Id];
        }

        public int cuenta()
        {
            return this.dAlumnos.Count;
        }
        ///Atributos
        private Dictionary<String, Con_Alumno> dAlumnos;

    }
}
